作品 Demo 連結: 傳送門
(請按下 F12 開啟開發者工具並進入 Console 頁籤)
作品目標:使用本身提供的陣列,透過 JavaScript Console 出題目所要的答案。
難易度:★☆☆☆☆
JavaScript - 課程提供的 Data
const people = [
{ name: 'Wes', year: 1988 },
{ name: 'Kait', year: 1986 },
{ name: 'Irv', year: 1970 },
{ name: 'Lux', year: 2015 }
];
const comments = [
{ text: 'Love this!', id: 523423 },
{ text: 'Super good', id: 823423 },
{ text: 'You are the best', id: 2039842 },
{ text: 'Ramen is my fav food ever', id: 123523 },
{ text: 'Nice Nice Nice!', id: 542328 }
];
const isAdults = people.some( people => new Date().getFullYear() - people.year > 18 );
console.log(isAdults); // true
這裡用到的新的簡單過濾器叫做 .some()
他不會回傳陣列,而是會回傳一個 boolean 值
如果至少有一個符合條件
即回傳 true、否則 false
const everyOneAdults = people.every( people => new Date().getFullYear() - people.year > 18 );
console.log(everyOneAdults); //false
.every() 跟 .some() 是類似的函數,
只差在是要全陣列都符合才會回傳 true
const findId = comments.find(comment => comment.id === 823423);
console.log(findId);
// { id: 823423, text: "Super good" }
.find() 是會回傳符合條件的元素給你
const targetIdx = comments.findIndex( comment => comment.id === 823423);
const newComments = [
...comments.splice(0, targetIdx),
...comments.splice(targetIdx)
];
console.table(newComments);
// 0:{text: "Love this!", id: 523423}
// 1:{text: "You are the best", id: 2039842}
// 2:{text: "Ramen is my fav food ever", id: 123523}
// 3:{text: "Nice Nice Nice!", id: 542328}
這裡使用到的是 .findIndex()
如字面意思,他跟 .find() 相同
只是回傳的會是符合結過的 index 號碼
最後我們在使用 splice 來加入新的陣列
大家還記得 "..." 的意思吧?
就是會將元素一個一個推進去,而不是連陣列外層都放進去喔!
(大家可以試試看不加 "..." 就會懂了 =D
昨天已經爆肝一天,等等還要繼續
小心肝加油呀!! QAQ//